package com.jhy.suixianglu.daima20221219;

import com.jhy.suixianglu.daima20221212.ListNode;

public class SwapPairs {
    public ListNode swapPairs(ListNode head) {
        // 设置虚拟节点
        ListNode dhead = new ListNode(-1, head);
        // 因为要操作后面两个节点 所以我们设置为当前节点为准
        ListNode cur = dhead;
        // 遍历的逻辑写完了
        while (cur.next != null && cur.next.next != null) {
            /**
             * 因为前一个指针指向后面一个指针 会在后面进行变化 避免后面这个
             * 指针找不到了 所以我们可以将需要的指针给保存下来。
             */
            // 保存临时的temp节点 也就是我们的1节点
            ListNode temp = cur.next;
            // 保存我们3节点
            ListNode temp1 = cur.next.next.next;
            // 虚拟头节点指向2
            cur.next = cur.next.next;
            // 2指向1
            cur.next.next = temp;
            // 1指向3
            temp.next = temp1;
            // 将当前cur向后移动2个位置
            cur = cur.next.next;
        }
        return dhead.next;
    }
}
